Создает копию текущего состояния перечислителя.
HRESULT Clone ( lEnumVARIANT FAR* FAR*ppEnum );
Параметр
ppEnum
После возврата указывает на копию
перечислителя.
Коды возврата
Из возвращенного HRESULT получают один из следующих
кодов возврата:
| Код возврата | Значение |
| S_OK | Успех. |
| E_OUTOFMEMORY | He хватает памяти для выполнения операции. |
Комментарии
С помощью этой функции можно запомнить некоторую точку в
последовательности перечисления, чтобы позднее к ней возвратиться. Полученный
перечислитель имеет тот же интерфейс, что и оригинальный. При повторном
перечислении не гарантируется возврат той же самой последовательности вариантов,
что при первом. Хотя точное повторение и желательно, результат зависит от
перечисляемого набора. Для некоторых наборов выполнение этого условия может
оказаться непрактичным (например, в случае перечисления файлов в каталоге).
Пример
Следующий код реализует IEnumVARIANT::Clone для наборов из примера Lines (файл Enumvar.cpp).
STDMETHODIMP
CEnumVariant::Clone(IEnumVARIANT FAR* FAR* ppenum)
{
CEnumVariant FAR* penum = NULL;
HRESULT hr;
*ppenum = NULL;
hr = CEnumVariant::Create(m_psa, m_cElements, &penum);
if (FAILED(hr))
goto error;
penum->AddRef();
penum->m_lCurrent = m_lCurrent;
*ppenum = penum;
return NOERROR;
error:
if (penum)
penum->Release();
return hr;
}